/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.isd.promocion.web;

import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.mail.internet.InternetAddress;
import com.isd.global.modelo.Parametro;
import com.isd.global.rn.ParametrosRN;
import com.isd.global.util.JsfUtil;
import com.isd.global.web.MailFactory;
import com.isd.seguridad.web.UsuarioSessionBean;
import com.isd.venta.modelo.Cliente;

/**
 *
 * @author ctrosch
 */
@ManagedBean(name="contactoPromoBean")
@ViewScoped
public class ContactoPromoBean implements Serializable {

    @EJB private ParametrosRN parametroRN;
    
    @EJB private MailFactory mailFactory;
    
    private String nombreContacto;
    private String emailContacto;
    private String asunto;
    private String telefono;
    private String mensaje;
    private Integer cantidad;
    private String condicionPago;
    private String existePoolActivo;

    @ManagedProperty(value = "#{usuarioSessionBean}")
    private UsuarioSessionBean usuarioSession;

    /** Creates a new instance of ContactoMB */
    public ContactoPromoBean(){

    }
    
    @PostConstruct
    private void init(){
                    
        if (usuarioSession.isEstaRegistrado() && usuarioSession.getUsuario().getCliente()!=null) {

            asunto = "Estoy interesado en la compra en pool nro: ";
            Cliente c = usuarioSession.getUsuario().getCliente();

            nombreContacto = c.getNombre();
            emailContacto = c.getDireml();
            telefono = c.getTelefn();

                      mensaje = "------------------------------------------------------------------------\n";
            mensaje = mensaje + "PEDIDO DE COMPRA EN POOL \n";
            mensaje = mensaje + "-------------------------------------------------------------------------\n";
            mensaje = mensaje + "Pool nro: \n";
            mensaje = mensaje + "Cuit: " + c.getNrodoc() +"\n";            

        } else {
            JsfUtil.addInfoMessage("Estimado cliente, Le informamos que el pool ha finalizado, esperamos su participación en el próximo");
        }                      
    }

    public void enviarMail(){
        
        enviarMailCliente();
        enviarMailEmpresa();
        reset();

    }
    public void enviarMailCliente(){

        String mensajeConsulta = "Estimado cliente:\n" +
                "Su compra en pool ha sido enviada y en breve nos pondremos en contacto con usted. Muchas gracias.\n\n "
                + "\n "
                + mensaje
                + " Cantidad pedida: "+cantidad+"\n"
                + " Forma de pago: " + condicionPago;

        
        
        
//        if(mailFactory.enviar(null,"Compra en pool a Intercap S.R.L. Pool nro: " ,emailContacto, mensajeConsulta)){
//            JsfUtil.addInfoMessage("Su compra ha sido enviada, en breve nos pondremos en contacto con usted","");
//        }else{
//            JsfUtil.addWarningMessage("Disculpe las molestias, actualmente no podemos procesar la compra","");
//        }
    }

    public void enviarMailEmpresa() {
        try {
            Parametro p = new Parametro();
            try {
                p = parametroRN.getParametros();
            } catch (Exception ex) {

            }

            String mensajeConsulta = "Contacto: " + nombreContacto + "\n";
            mensajeConsulta += "Email: " + emailContacto + "\n";
            mensajeConsulta += "Telefono: " + telefono + "\n";
            mensajeConsulta += "Consulta:\n" + mensaje + "\n";
            mensajeConsulta += "Cantidad pedida: "+cantidad+"\n";
            mensajeConsulta += "Forma de pago: " + condicionPago;

            
            InternetAddress dirFrom = new InternetAddress(emailContacto, nombreContacto);
//            mailFactory.enviar(dirFrom, "Confirmación compra en pool: " + (poolBean.getP().getNumeroActualPool()==null ? "n/d":poolBean.getP().getNumeroActualPool()), p.getCorreoElectronicoPool() , mensajeConsulta);
            
        } catch (UnsupportedEncodingException unsupportedEncodingException) {

            JsfUtil.addErrorMessage(unsupportedEncodingException.getMessage());
        }
    }

    public void reset(){

        setAsunto(null);
        setEmailContacto(null);
        setTelefono(null);
        setMensaje(null);
        setNombreContacto(null);
        cantidad = null;
        condicionPago = "";
    }

    //----------------------------------------------------------------------

    public String getAsunto() {
        return asunto;
    }

    public void setAsunto(String asunto) {
        this.asunto = asunto;
    }

    public String getEmailContacto() {
        return emailContacto;
    }

    public void setEmailContacto(String emailContacto) {
        this.emailContacto = emailContacto;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    public String getNombreContacto() {
        return nombreContacto;
    }

    public void setNombreContacto(String nombreContacto) {
        this.nombreContacto = nombreContacto;
    }

    public UsuarioSessionBean getUsuarioSession() {
        return usuarioSession;
    }

    public void setUsuarioSession(UsuarioSessionBean usuarioSession) {
        this.usuarioSession = usuarioSession;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public ParametrosRN getParametroRN() {
        return parametroRN;
    }

    public void setParametroRN(ParametrosRN parametroRN) {
        this.parametroRN = parametroRN;
    }

    public String getExistePoolActivo() {
        return existePoolActivo;
    }

    public void setExistePoolActivo(String existePoolActivo) {
        this.existePoolActivo = existePoolActivo;
    }

    public Integer getCantidad() {
        return cantidad;
    }

    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    public String getCondicionPago() {
        return condicionPago;
    }

    public void setCondicionPago(String condicionPago) {
        this.condicionPago = condicionPago;
    }    
}
